
// function a(){
//   console.log(1);
// }

// a()

// setTimeout(()=>{   //异步代码 会被挂起到另外一个维护的任务队列当中，不会录入执行栈里去，
//   // 当执行栈里执行完毕，再去执行任务队列
//   console.log(2);
// },1000)


// function b(){
//   console.log(1);
// }

// b()


console.log('start');
async function async1() {
  await async2()  //await 会阻塞它下一行代码执行，推入微任务队列
  console.log('async1 end');
}

async function async2() {
  console.log('async2 end');
}

async1()

setTimeout(() => {
  console.log('setimeout');  //宏任务队列
}, 0)

new Promise(resolve => {
  console.log('promise');   //同步代码
  resolve()
})
  .then(() => {
    console.log('promise1');  //去到微任务队列
  })  //这个.then 没执行后面的.then不能接
  .then(() => {
    console.log('promise2');    //去到微任务队列
  })

console.log('end');


// start
// async2 end
// promise
// end
// async1 end
// promise1
// promise2
// setimeout